001    /**
002     * Created by IntelliJ IDEA.
003     * User: Wei Wang
004     * Date: Apr 9, 2003
005     * Time: 4:30:17 PM
006     */
007    
008    package EVolve;
009    
010    import EVolve.data.DataManager;
011    import EVolve.data.DataSource;
012    
013    import java.util.*;
014    
015    public class DataSourceManager {
016        private ArrayList dataManagerList;
017        private ArrayList filterList;
018        private int currentDataSource;
019        private DataManager currentDataManager;
020        private Filter currentFilter;
021    
022        public DataSourceManager(ArrayList dsList) {
023            dataManagerList = new ArrayList();
024            for (int i=0; i<dsList.size(); i++) {
025                DataSource dataSource = (DataSource)dsList.get(i);
026                dataManagerList.add(new DataManager(dataSource));
027            }
028            filterList = new ArrayList();
029            currentDataSource = -1;
030        }
031    
032        public void init() {
033            for (int i=0; i<dataManagerList.size(); i++) {
034                filterList.add(new Filter());
035            }
036            switchDataSource(0);
037        }
038    
039        public int getCurrentDataSourceId() {
040            return currentDataSource;
041        }
042    
043        public void switchDataSource(int selectedDataSourceIndex) {
044            if (currentDataSource == selectedDataSourceIndex) return;
045    
046            currentDataSource = selectedDataSourceIndex;
047            currentDataManager = (DataManager)dataManagerList.get(selectedDataSourceIndex);
048            currentFilter = (Filter)filterList.get(selectedDataSourceIndex);
049            Scene.selectDataSource(currentDataManager, currentFilter);
050        }
051    
052        public ArrayList getDataManagerList() {
053            return dataManagerList;
054        }
055    
056        public void addDataSource(String name) {
057            Object dsource = EVolve.Main.instanciateFromName(name);
058    
059            if (dsource == null) {
060                Scene.showErrorMessage("EVolve failed to instanciate data source: \"" + name + "\"");
061            } else if (dsource instanceof DataSource) {
062                dataManagerList.add(new DataManager((DataSource)dsource));
063                filterList.add(new Filter());
064            } else {
065                Scene.showErrorMessage("EVolve> \"" + name + "\" is not a DataSource");
066            }
067    
068        }
069    
070        public String getUsedDataSourceName(int dataSourceId) {
071            DataManager dm = (DataManager)dataManagerList.get(dataSourceId);
072            return dm.getDatasourceName();
073        }
074    
075        public String getCurrentDataSourceName() {
076            return currentDataManager.getDatasourceName();
077        }
078    
079        public DataManager getDataManager(int index) {
080            if (index >= dataManagerList.size()) return null;
081    
082            return (DataManager)dataManagerList.get(index);
083        }
084    }